package com.java.tools;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.jupiter.api.Test;

class collectionTools {
	/**
	 * junit中不能有返回值,编译时选择test0X，不能选择括号
	 */
	@Test
	void test00() {
		/**
		 * 二分查找算法的使用
		 */
		// 创建一个list对象
		List lst = new ArrayList();
		lst.add("abc");
		lst.add("a");
		lst.add("z");
		lst.add("c");
		// 使用工具类进行查找
		Collections.addAll(lst, "q");
		Collections.addAll(lst, "j");
		// 先利用Collections.sort(List)进行排序
		Collections.sort(lst);
		System.out.println("lst=" + lst);
		// lst中的最大值
		Comparable i = Collections.max(lst);
		System.out.println("lst数组中的最大值为：" + i);

		// lst中的最小值
		Comparable i1 = Collections.min(lst);
		System.out.println("lst数组中的最大值为：" + i1);
		int index = Collections.binarySearch(lst, "a");
		System.out.println("index=" + index);

		// 使用默认随机源对指定列表进行置换，倒序输出
		Collections.shuffle(lst);
		System.out.println("lst=" + lst);

	}

	@Test
	void test01() {
		// Arrays的使用方法，复制数组的使用
		// 定义一个数组
		int[] arr = { 4, 2, 5, 6, 9 };
		for (int i : arr) {
			System.out.print(" " + i);
		}
		System.out.println();
		// 复制数组
		int[] newArr = Arrays.copyOf(arr, 20);
		for (int i : newArr) {
			System.out.print(" " + i);
		}
		System.out.println();

	}

	@Test
	void test02() {
		/**
		 * 两个数组之间的复制,使用System的方法
		 */
		// 创建一个新数组

		int[] arr = { 4, 5, 5, 6, 9, 8 };
		for (int i : arr) {
			System.out.print(" " + i);
		}
		System.out.println();
		// 新数组,数组长度为20
		int[] newArr = new int[20];
		System.arraycopy(arr, 1, newArr, 3, arr.length);
		for (int i : newArr) {
			System.out.print(" " + i);
		}
		System.out.println();
	}
}
